5 GOSUB60100:CLR:RESTORE 6 REM ARRAYS FOR TEMPERAMENTS 10 DIM EH(46),PH(46),JH(46),MH(46) 20 DIM EL(46),PL(46),JL(46),ML(46) 25 REM ARRAY FOR SCALES 30 DIM HM(20),LM(20) 32 REM ARRAY FOR REAL TIME 35 DIM AS(8) 36 GOSUB 6000:RESTORE:REM READ ASCII VALUES FOR REAL TIME 40 POKE53272,23:POKE53280,7 45 REM MENU 1 50 PRINT"[147]":PRINTTAB(6);"[208][204][197][193][211][197] [215][193][201][212] . . . [211][197][212][212][201][206][199] [213][208]" 60 PRINT"":PRINTTAB(12);"([193]BOUT 14 SECS.) 70 [141]5000:[143] SET UP ARRAYS 80 [151]648,4:[151]53281,0:[153]"CONT"; 82 [153]"LOAD":[153][163]14);"(null)VAL(null)(null)VAL(null)VALSTR$ ASC(null)(null) 85 PRINTTAB(14);"[163][163][163][163][163][163][163][163][163][163][163][163]" 90 PRINTTAB(17);"[205][197][206][213] 1":PRINT 100 PRINT"[201]. [212]EMPERAMENTS 110 [153][163]3);"1.WAIT VALQUAL" 120 [153][163]3);"2.WAIT (null)YTHAGOREAN" 130 [153][163]3);"3.WAIT MID$UST" 140 [153][163]3);"4.WAIT (null)EAN" 150 [153][163]3);"5.WAIT (null)OUR OWN EQUAL TEMPERAMENT" 155 [153] 160 [153]"RIGHT$RIGHT$. (null)CALES" 170 [153][163]3);"1.WAIT (null)AJOR" 180 [153][163]3);"2.WAIT (null)INOR" 190 [153][163]3);"3.WAIT STR$ORIAN" 200 [153][163]3);"4.WAIT (null)HRYGIAN" 210 [153][163]3);"5.WAIT (null)YDIAN" 220 [153][163]3);"6.WAIT (null)IXOLYDIAN" 230 [153][163]3);"7.WAIT ATNEOLIAN" 240 [153][163]3);"8.WAIT (null)OCRIAN" 250 [153][163]3);"9.WAIT LENHROMATIC (B OR #) 260 PRINT"[150][197]NTER NUMBER OR [209] TO QUIT. [154]"; 270 POKE198,0:POKE204,0:POKE207,0:WAIT198,1:POKE204,1:GETK$ 271 IFK$="Q"ORK$="[209]"THEN60000 272 TU=VAL(K$):IFTU=0THEN260 273 IFTU=1ORTU=2ORTU=3ORTU=4THENPRINTK$;:DE=.5:GOSUB7000:GOTO280 274 IFTU=5THENPRINTK$;:DE=.5:GOSUB7000:GOTO1300 275 GOTO260 280 PRINT" "; 281 PRINT"[150][197]NTER NUMBER OF DESIRED SCALE. [154]"; 282 POKE198,0:POKE204,0:POKE207,0:WAIT198,1:POKE204,1:GETK$ 283 MO=VAL(K$):IFMO=0THEN281 284 IFMO=1ORMO=2ORMO=3ORMO=4ORMO=5ORMO=6ORMO=7ORMO=8THENPRINTK$;:DE=.5:GOSUB7000:GOTO300 285 IFMO=9THENPRINTK$;:DE=.5:GOSUB7000:GOTO287 286 REM CHROMATIC SCALE 287 PRINT"[147][212]HIS FUNCTION WILL ALLOW YOU TO HEAR A CHROMATIC OCTAVE SCALE ONLY 288 [153]"STR$O YOU WISH A CHROMATIC SCALE ON SHARPS OR FLATS? (S/F) "; 289 [151]198,0:[151]204,0:[151]207,0:[146]198,1:[151]204,1:[161]K$:[139]K$[179][177]"S"[175]K$[179][177]"F"[167]289 290 [139]K$[178]"S"[167][153]K$:DE[178].5:[141]7000:MO[178]9:AP[178]1:[137]400 291 [139]K$[178]"F"[167][153]K$:DE[178].5:[141]7000:MO[178]10:AP[178]1:[137]400 299 [143] MENU 1 300 [153]"LOAD":[153][163]14);"(null)VAL(null)(null)VAL(null)VALSTR$ ASC(null)(null) 305 PRINTTAB(14);"[163][163][163][163][163][163][163][163][163][163][163][163]" 310 PRINTTAB(17);"[205][197][206][213] 2":PRINT 320 PRINT"[201][201][201]. [193]PPLICATIONS" 330 PRINTTAB(3);"1.[146] [207]CTAVE SCALE" 340 PRINTTAB(3);"2.[146] [210]OOT CHORD" 350 PRINTTAB(3);"3.[146] [210]EAL-TIME MELODY" 360 PRINTTAB(3);"4.[146] [212]WINKLE [204]ITTLE [211]TAR (MELODY) 370 [153][163]3);"5.WAIT (null)WINKLE (null)ITTLE (null)TAR (HARMONIZED)" 380 [153]"DEFVALNTER NUMBER OF DESIRED APPLICATION. CONT"; 381 [151]198,0:[151]204,0:[151]207,0:[146]198,1:[151]204,1:[161]K$ 382 AP[178][197](K$):[139]AP[178]0[167]380 383 [139]AP[178]1[176]AP[178]2[176]AP[178]3[176]AP[178]4[176]AP[178]5[167][153]K$;:DE[178].5:[141]7000:[137]400 384 [137]380 399 [143] PRIMARY PIVOT POINT 400 [145]MO[141]5330,5350,5370,5390,5410,5430,5450,5470,5490,5510 405 [145]AP[137]500,600,700,900,1100 499 [143] OCTAVE SCALE 500 [153]"LOADLEFT$VAL(null)VALCLOSERIGHT$(null)CLOSE(null)(null)(null)(null)CLOSE(null)LEN(null)ATN(null)VALCLOSE(null)LENATN(null)VAL !":[153]"((null)RESS <(null)(null)ATNLENVAL PEEKATN(null)> TO END EARLY.)" 501 [141]2000 502 [143] PLAY OCTAVE 504 [139]NO[178]13[167]510 506 [129]I[178]8[164]15:[137]512 510 [129]I[178]8[164]20 512 [151]SI,LM(I):[151]SI[170]1,HM(I):[143] PITCHES 514 [151]SI[170]4,17:[143] WAVEFORM GATE #1 ON 516 DE[178]1:[141]7000:[143] DURATION 518 [151]SI[170]4,16:[143] GATE #1 OFF 519 [161]K$:[139]K$[178]" "[167]570 520 [130] 570 [141]8000:[153]:[153]:[153]"STR$O YOU WISH TO HEAR IT AGAIN? (Y/N) "; 580 [141]3900 582 [139]K$[178]"N"[167][153]K$:DE[178].5:[141]7000:[137]80 584 [153]K$:DE[178].5:[141]7000:[137]500 599 [143] ROOT CHORDS 600 [153]"LOAD":[153]"LEFT$VAL(null)VALCLOSERIGHT$(null)CLOSE(null)(null)(null)(null)CLOSE(null)(null)(null)(null)CLOSELENLEFT$(null)(null)STR$CLOSE!" 602 [141]2000 610 [151]SI,LM(8):[151]SI[170]1,HM(8) 612 [151]SI[170]7,LM(10):[151]SI[170]8,HM(10) 614 [151]SI[170]14,LM(12):[151]SI[170]15,HM(12) 616 [151]SI[170]4,17:[151]SI[170]11,17:[151]SI[170]18,17 620 [153]:[153]"(null)RESS <(null)(null)ATNLENVAL PEEKATN(null)> TO CONTINUE."; 622 [161]K$:[139]K$[179][177]" "[167]622 660 [141]8000 670 [153]:[153]:[153]:[153]"STR$O YOU WISH TO HEAR IT AGAIN? (Y/N) "; 680 [141]3900 682 [139]K$[178]"N"[167][153]K$:DE[178].5:[141]7000:[141]8000:[137]80 684 [153]K$:DE[178].5:[141]7000:[137]600 699 [143] REAL TIME PLAY 700 [153]"LOAD(null)(null)ATN(null) ATN (null)(null)(null)VAL !" 701 [153]"((null)RESS THE NUMBER KEYS ON THE KEYBOARD FOR THE INDICATED SOLFEGE DEGREE.) 710 FORX=0TO4:PRINT"";:NEXT 711 PRINT"[164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164] 712 [153]"GETSTR$(null)SGN(null)VALSGN(null)RIGHT$SGNASCATNSGN(null)(null)SGN(null)ATNSGN(null)RIGHT$SGNSTR$(null)GET 713 PRINT"[161] 1[180] 2[180] 3[180] 4[180] 5[180] 6[180] 7[180] 8[161] 714 [153]"(null)RESS <(null)(null)ATNLENVAL PEEKATN(null)> TO END THIS SECTION." 760 [141]2000 770 [161]K$:[139]K$[178]""[167]770 780 K[178][198](K$) 790 [139]K[178]32[167][141]8000:[137]80 800 I[178]0 805 [139]K[178]AS(I)[167][151]SI,1:[151]SI[170]1,1 810 [151]SI[170]4,16:[139]K[178]AS(I)[167][151]SI,LM(I[170]8):[151]SI[170]1,HM(I[170]8):[151]SI[170]4,17:[137]770 820 I[178]I[170]1 830 [139]I[179][178]8[167]805 840 [137]770 899 [143] TWINKLE STAR MELODY 900 [153]"LOAD(null)LEFT$RIGHT$(null) RIGHT$(null) (null)(null)RIGHT$(null)(null)(null)VAL (null)(null)ATN(null) (null)VAL(null)(null)STR$(null) !" 905 [153]"((null)RESS <(null)(null)ATNLENVAL PEEKATN(null)> TO END EARLY.)" 910 [141] 2000 920 RL[178]1000:[141]11000 924 [129]I[178]1[164]172 925 [139]D[178][171]1[167]960 926 [151]SI[170]4,16:[141]1200:[141]1220 927 [161]K$:[139]K$[178]" "[167]960 928 [130] 960 [141] 2000 970 [153]:[153]"STR$O YOU WISH TO HEAR IT AGAIN? (Y/N) "; 980 [141]3900 982 [139]K$[178]"N"[167][153]K$:DE[178].5:[141]7000:D[178]0:[141]8000:[137]80 984 [153]K$:DE[178].5:[141]7000:D[178]0:[137]900 999 [143] TWINKLE STAR DATA 1000 [131] 1,8,8,1,1,8,8,1,1,12,8,3,1,12,8,3,1,13,8,4,1,13,8,4,2,12,8,3 1010 [131] 1,11,8,2,1,11,7,5,1,10,9,6,1,10,8,6,1,9,8,4,1,9,7,5,2,8,3,1 1020 [131] 1,12,8,3,1,12,8,3,1,11,8,2,1,11,7,2,1,10,8,1,1,10,8,3,2,9,7,5 1030 [131] 1,12,8,3,1,12,8,3,1,11,8,2,1,11,7,2,1,10,8,1,1,10,8,3,2,9,7,5 1040 [131] 1,8,8,1,1,8,8,1,1,12,8,3,1,12,8,3,1,13,8,4,1,13,8,4,2,12,8,3 1050 [131] 1,11,8,2,1,11,7,5,1,10,9,6,1,10,8,6,1,9,8,4,1,9,7,5,2,8,3,1 1060 [131] -1,0,0,0 1099 [143] TWINKLE STAR HARMONIZED 1100 [153]"LOAD(null)LEFT$RIGHT$(null) RIGHT$(null) (null)(null)RIGHT$(null)(null)(null)VAL (null)(null)ATN(null) LEFT$ATN(null)(null)(null)(null)RIGHT$(null)VALSTR$ !" 1105 [153]"((null)RESS <(null)(null)ATNLENVAL PEEKATN(null)> TO END EARLY.)" 1110 [141]2000 1120 RL[178]1000:[141]11000 1130 [129]I[178]1[164]172 1140 [139] D[178][171]1[167]1160 1150 [151]SI[170]4,16:[151]SI[170]11,16:[151]SI[170]18,16:[141]1200:[141]1260 1152 [161]K$:[139]K$[178]" "[167]1160 1155 [130] 1160 D[178]0:[141]2000:[153]:[153]"STR$O YOU WISH TO HEAR IT AGAIN? (Y/N) "; 1162 [141]3900 1164 [139]K$[178]"N"[167][153]K$:DE[178].5:[141]7000:D[178]0:[141]8000:[137]80 1166 [153]K$:DE[178].5:[141]7000:D[178]0:[137]1100 1199 [143] READ TWINKLE STAR DATA 1200 [135] D,R1,R2,R3 1210 [142] 1219 [143] REM POKE TWINKLE DATA FOR MELODY 1220 P1[178]LM(R1):P2[178]HM(R1) 1230 [151]SI,P1:[151]SI[170]1,P2 1235 [151]SI[170]4,17 1240 DE[178].45[172]D:[141]7000 1250 [142] 1259 [143] REM POKE TWINKLE DATA FOR HARMONY 1260 P1[178]LM(R1):P2[178]HM(R1):P3[178]LM(R2):P4[178]HM(R2):P5[178]LM(R3):P6[178]HM(R3) 1265 [151]SI,P1:[151]SI[170]1,P2 1270 [151]SI[170]7,P3:[151]SI[170]8,P4 1280 [151]SI[170]14,P5:[151]SI[170]15,P6 1290 [151]SI[170]4,17:[151]SI[170]11,17:[151]SI[170]18,17 1295 DE[178].37[172]D:[141]7000 1296 [142] 1299 [143] OWN EQUAL TEMPERAMENT 1300 [153]"LOAD(null)HIS FUNCTION ALLOWS YOU TO DEFINE YOUR OWN EQUAL TEMPERAMENT SCALE." 1301 [153]"(null)HE OCTAVE WILL BE EQUALLY DIVIDED INTO THE NUMBER OF SEGMENTS YOU "; 1302 [153]"SPECIFY. (null)OU MAY DEFINE SEGMENTS FROM 1 TO 1200 (12 IS A 'NORMAL' "; 1303 [153]"CHROMATIC SCALE, 1200 IS ATUNER'S 'CENTS' SCALE).":[153] 1304 [153]"(null)RESS <(null)VAL(null)(null)(null)(null)> AFTER ENTERING THE DESIRED "; 1305 [153]"NUMBER OF SEGMENTS BELOW.":[153] 1306 [133]"(null)UMBER OF SEGMENTS ";EI 1307 [139]EI[179]1[176]EI[177]1200[167][153]"";:[137]1306 1309 [153]"(null)RESS <(null)(null)ATNLENVAL PEEKATN(null)> TO END THIS SECTION. ":[153] 1350 [141]2000 1355 PP[178]261.626:[143] ACTUAL HZ FREQUENCY VALUE FOR C 1360 CR[178]2[174](1[173]EI):[143] MULTIPLYING FACTOR FOR SEGMENTS 1370 CN[178].06097:[143] COMMODORE FREQUENCY CONVERSION 1380 BF[178][181](PP[173]CN) 1390 HI%[178]BF[173]256:LI%[178]BF[171]256[172]HI% 1395 [153]" 0 "; 1400 [151]SI[170]7,LI%:[151]SI[170]8,HI% 1405 DE[178]1:[141]7000 1410 [151]SI[170]11,17 1430 I[178]0 1440 AF[178][188](PP)[170][188](CR)[172](I[170]1):BF[178][189](AF):CF[178][181](BF[173]CN) 1445 [139]CF[177]61176[167][141]8000:[137]80 1450 HJ%[178]CF[173]256:LJ%[178]CF[171]256[172]HJ% 1460 [153] I[170]1;" "; 1470 [151]SI,LJ%:[151]SI[170]1,HJ% 1480 [151]SI[170]4,17 1490 DE[178]1:[141]7000 1500 [161]K$ 1510 [139]K$[178]" "[167][141]8000:[137]80 1530 I[178]I[170]1 1540 [137]1440 1999 [143] INITIALIZE SID CHIP 2000 [129]SI[178]54272[164]54296:[151]SI,0:[130] 2010 SI[178]54272:[151]SI[170]24,15:[143] LOUDNESS 2012 [151]SI[170]5,0:[151]SI[170]6,128:[143] ADSR-1 2013 [151]SI[170]12,0:[151]SI[170]13,128:[143] ADSR-2 2014 [151]SI[170]19,0:[151]SI[170]20,128:[143] ADSR-3 2015 [151]SI[170]4,17:[151]SI[170]11,17:[151]SI[170]18,17 2016 [142] 3899 [143] FLASHING GET ROUTINE 3900 [151]198,0:[151]204,0:[151]207,0:[146]198,1:[151]204,1:[161]K$:[139]K$[179][177]"Y"[175]K$[179][177]"N"[167]3900 3902 [142] 4999 [143] SET UP TEMPERAMENT ARRAYS 5000 SF[178]2145:[143] STARTING COMMODORE FREQUENCY FOR C BELOW MIDDLE C 5050 K[178]1 5060 J[178]1 5070 [141]5599 5080 [129]I[178]1[164]23 5090 [135] IC 5100 H1%[178]SF[172](1[170]IC)[173]256:L1%[178](SF[172](1[170]IC))[171]256[172]H1% 5110 [145] J [141]5170,5190,5210,5230 5120 [130] 5130 [139]J[178]4[167]5250 5140 J[178]J[170]1 5150 [139]K[178]1[167]5080 5160 [139]K[178]2[167]5280 5170 EH(I)[178]H1%:EL(I)[178]L1% 5180 [142] 5190 PH(I)[178]H1%:PL(I)[178]L1% 5200 [142] 5210 JH(I)[178]H1%:JL(I)[178]L1% 5220 [142] 5230 MH(I)[178]H1%:ML(I)[178]L1% 5240 [142] 5250 [139]K[178]2[167]5320 5260 [141]5599 5270 J[178]1:K[178]2 5280 [129]I[178]24[164]46 5290 [135] IC 5300 H1%[178]SF[172]2[172](1[170]IC)[173]256:L1%[178](SF[172]2[172](1[170]IC))[171]256[172]H1% 5310 [137]5110 5320 [142] 5329 [143] SCALE VALUES 5330 RL[178]5340:[141]11000:[137]5570 5340 [131] 1,4,7,10,13,16,19,24,27,30,33,36,39,42,45 5350 RL[178]5360:[141]11000:[137]5570 5360 [131] 1,4,6,10,13,15,19,24,27,29,33,36,38,42,45 5370 RL[178]5380:[141]11000:[137]5570 5380 [131] 1,4,6,10,13,16,18,24,27,29,33,36,39,41,45 5390 RL[178]5400:[141]11000:[137]5570 5400 [131] 1,3,6,10,13,15,18,24,26,29,33,36,38,41,45 5410 RL[178]5420:[141]11000:[137]5570 5420 [131] 1,4,7,12,13,16,19,24,27,30,35,36,39,42,45 5430 RL[178]5440:[141]11000:[137]5570 5440 [131] 1,4,7,10,13,16,18,24,27,30,33,36,39,41,45 5450 RL[178]5460:[141]11000:[137]5570 5460 [131] 1,4,6,10,13,15,18,24,27,29,33,36,38,41,45 5470 RL[178]5480:[141]11000:[137]5570 5480 [131] 1,3,6,10,12,15,18,24,26,29,33,35,38,41,45 5490 RL[178]5500:[141]11000:[137]5580 5500 [131] 24,26,27,29,30,33,35,36,38,39,41,42,45 5510 RL[178]5520:[141]11000:[137]5580 5520 [131] 24,25,27,28,30,33,34,36,37,39,40,42,45 5529 [143] ARRAYS FOR SCALE VALUES 5530 HM(I)[178]EH(MI):LM(I)[178]EL(MI):[142] 5540 HM(I)[178]PH(MI):LM(I)[178]PL(MI):[142] 5550 HM(I)[178]JH(MI):LM(I)[178]JL(MI):[142] 5560 HM(I)[178]MH(MI):LM(I)[178]ML(MI):[142] 5569 [143] READ SCALE VALUES 5570 NO[178]8:[129]I[178]1[164]15:[135]MI:[145]TU[141]5530,5540,5550,5560:[130]:[142] 5580 NO[178]13:[129]I[178]8[164]20:[135]MI:[145]TU[141]5530,5540,5550,5560:[130]:[142] 5598 [143] TEMPERAMENT RATIOS 5599 RL[178]5600:[141]11000:[142] 5600 [131] 0,.05946,.05946,.12246,.1892,.1892,.2599,.3348,.2599,.3348,.4142 5610 [131] .4142,.4983,.5874,.5874,.6818,.7818,.7818,.8877,1,.8777,1,1 5620 [131] 0,.0679,.0535,.125,.2014,.1851,.2656,.3515,.2485,.3333,.4238 5630 [131] .4046,.5,.6017,.5802,.6875,.8021,.7777,.8984,1.0136,.8728,1,1 5640 [131] 0,.0417,.0667,.125,.1718,.2,.25,.3020,.28,.3333,.4062 5650 [131] .4400,.5,.5625,.6,.6667,.7578,.8,.875,.9531,.92,1,1 5660 [131] 0,.0449,.07,.118,.1682,.1963,.25,.3062,.28,.3375,.3975 5670 [131] .4311,.49535,.5625,.6,.6718,.747,.7889,.8691,.9531,.914,1,1 5999 [143] READ ASCII FOR REAL TIME 6000 RL[178]6020:[141] 11000 6010 [129]I[178]0[164]7:[135] AS:AS(I)[178]AS:[130]:[142] 6020 [131] 49,50,51,52,53,54,55,56 6999 [143] TIMING LOOP 7000 TI$[178]"000000" 7010 [139]TI[173]60[179]DE[167]7010 7020 [142] 7999 [143] CLEAR SID CHIP 8000 [129]SI[178]54272[164]54296:[151]SI,0:[130] 8010 [142] 10999 [143] RESTORE TO SPECIFIC LINE ROUTINE 11000 [151]785,232:[151]786,7:[151]209,232:[151]210,7:[151]211,0:[151]213,39 11010 [153]" S&$WAIT(null)HDWAITATN$WAITCLOSEDWAITPEEKCLOSE" 11011 [151]RL,[194](RL):RL[178][183](RL):[142] 60000 [159]15,8,15,"R0:HELLO CONNECT=HELLO CONNECT":[132]15,ER:[160]15 60010 [139]ER[179][177]63[167][128] 60020 [147]"HELLO CONNECT",8 60100 [151]53280, 2:[151]53281, 0:[153]"LOADRETURN"; 60101 [153]"LOADSTARPRESENTS:" 60102 [153]"OR`=`^" 60103 [153]"}}}OR``iOR``i" 60104 [153]"POKE```````````}POKE`}POKE`}POKE`}POKE``}POKE`OR`iPOKE`}POKE``}POKE`````````````````OR`iPOKE`}"; 60105 [153]"POKE```}POKE`-``kPOKE`}POKE```-``kPOKE`````OR``iPOKE``u`=`iPOKE`}POKE```}POKE```}POKE`}POKE````"; 60106 [153]"-